home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 1.0 for Developers / QuickTime 1.0 for Developers.iso / Programming Stuff / Interfaces / Oldstyle C Interfaces / Matrix.h < prev    next >
C/C++ Source or Header  |  1991-09-06  |  3KB  |  95 lines

  1. /*
  2.     File:        Matrix.h
  3.     Copyright:    © 1991 by Apple Computer, Inc., all rights reserved.
  4. */
  5.  
  6. #ifndef _Matrix_
  7. #define _Matrix_
  8.  
  9.  
  10. #include <types.h>
  11.  
  12.  
  13. #ifndef kFix1
  14.     #define kFix1            (0x00010000)
  15. #endif
  16.  
  17. #ifndef kFrac1
  18.     #define kFrac1            (0x40000000)
  19. #endif
  20.  
  21. struct MatrixRecord {
  22.     Fixed matrix[3][3];
  23. };
  24.  
  25. typedef struct MatrixRecord MatrixRecord;
  26. typedef MatrixRecord *MatrixRecordPtr;
  27.  
  28. typedef struct FixedPoint {
  29.     Fixed x;
  30.     Fixed y;
  31. } FixedPoint;
  32.  
  33. typedef struct FixedRect {
  34.     Fixed left;
  35.     Fixed top;
  36.     Fixed right;
  37.     Fixed bottom;
  38. } FixedRect;
  39.  
  40.  
  41. typedef enum {
  42.     identityMatrix        = 0x00,        /* result if matrix is identity */
  43.     translateMatrix        = 0x01,        /* result if matrix translates */
  44.     scaleMatrix         = 0x02,        /* result if matrix scales */
  45.     linearMatrix        = 0x04,        /* result if matrix is general 2 x 2 */
  46.     perspectiveMatrix    = 0x06        /* result if matrix is general 3 x 3 */
  47. } MatrixFlags;
  48.  
  49.  
  50.  
  51.  
  52. pascal short    GetMatrixType(MatrixRecord *m)
  53.         = {0x7014,0xABC2};
  54. pascal void        CopyMatrix(MatrixRecord *m1, MatrixRecord *m2)
  55.         = {0x7020,0xABC2};
  56. pascal Boolean    EqualMatrix(MatrixRecord *m1, MatrixRecord *m2)
  57.         = {0x7021,0xABC2};
  58.  
  59. pascal void        SetIdentityMatrix( MatrixRecord *matrix )
  60.         = {0x7015,0xABC2};
  61. pascal void        TranslateMatrix( MatrixRecord *m, Fixed deltaH, Fixed deltaV )
  62.         = {0x7019,0xABC2};
  63. pascal void        TranslateMatrixTo( MatrixRecord *m, Fixed deltaH, Fixed deltaV )
  64.         = {0x701a,0xABC2};
  65. pascal void        RotateMatrix( MatrixRecord *m, Fixed degrees, Fixed aboutX, Fixed aboutY )
  66.         = {0x7016,0xABC2};
  67. pascal void        ScaleMatrix( MatrixRecord *m, Fixed scaleX, Fixed scaleY, Fixed aboutX, Fixed aboutY )
  68.         = {0x7017,0xABC2};
  69. pascal void        SkewMatrix(MatrixRecord *m, Fixed skewX, Fixed skewY, Fixed aboutX, Fixed aboutY)
  70.         = {0x7018,0xABC2};
  71.  
  72. pascal OSErr    TransformFixedPoints(MatrixRecord *m, FixedPoint *fpt, long count)
  73.         = {0x7022,0xABC2};
  74. pascal OSErr    TransformPoints( MatrixRecord *mp, Point *pt1, long count )
  75.         = {0x7023,0xABC2};
  76. pascal Boolean    TransformFixedRect(MatrixRecord *m, FixedRect *fr, FixedPoint *fpp)
  77.         = {0x7024,0xABC2};
  78. pascal Boolean    TransformRect(MatrixRecord *m, Rect *r, FixedPoint *fpp)
  79.         = {0x7025,0xABC2};
  80.  
  81. pascal Boolean    InverseMatrix(MatrixRecord *m, MatrixRecord *im)
  82.         = {0x701c,0xABC2};
  83. pascal void        ConcatMatrix(MatrixRecord *a, MatrixRecord *b)
  84.         = {0x701b,0xABC2};
  85.  
  86. pascal void        RectMatrix(MatrixRecord *matrix,Rect *srcRect,Rect *dstRect)
  87.         = {0x701e,0xABC2};
  88. pascal void        MapMatrix(MatrixRecord *matrix,Rect *fromRect,Rect *toRect)
  89.         = {0x701d,0xABC2};
  90. pascal void        AlignMatrix(register MatrixRecord *mrp, Rect *srcRect)
  91.         = {0x701f,0xABC2};
  92.  
  93. #endif _Matrix_
  94.  
  95.